package com.akcome.apollo.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * 收益记录
 *
 * @author wn
 * @version $v: 1.0.0, $time:2017-12-26 08:49:00 Exp $
 */
@Entity
@Table(name = "bmp_income")
public class BmpIncome implements Serializable {

    /** 主键 **/
    private Long id;

    /** 挖矿日期 **/
    private Date miningDate;

    /** 账户ID **/
    private Long accountId;

    /** 币种(见字典COIN_TYPE) **/
    private String coinType;

    /** 付款方式(见字典PAY_MODE) **/
    private String payMode;

    /** 实付金额 **/
    private Double amount;

    /** 手续费 **/
    private Double feeAmount;

    /** 日变动率 **/
    private Double dayChange;

    /** 状态[见字典INCOME_STATUS] **/
    private String status;

    /** 支付时间 **/
    private Date payTime;

    /** 钱包地址 **/
    private String walletAddr;

    /** 返回码 **/
    private String retCode;

    /** 返回描述 **/
    private String retDesc;

    /** 创建时间 **/
    private Date createTime;


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "mining_date")
    public Date getMiningDate() {
        return miningDate;
    }

    public void setMiningDate(Date miningDate) {
        this.miningDate = miningDate;
    }

    @Column(name = "account_id", length = 11)
    public Long getAccountId() {
        return accountId;
    }

    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }

    @Column(name = "coin_type", length = 10)
    public String getCoinType() {
        return coinType;
    }

    public void setCoinType(String coinType) {
        this.coinType = coinType;
    }

    @Column(name = "pay_mode", length = 10)
    public String getPayMode() {
        return payMode;
    }

    public void setPayMode(String payMode) {
        this.payMode = payMode;
    }

    @Column(name = "amount", precision = 15, scale = 8)
    public Double getAmount() {
        return amount;
    }

    public void setAmount(Double amount) {
        this.amount = amount;
    }

    @Column(name = "fee_amount", precision = 15, scale = 8)
    public Double getFeeAmount() {
        return feeAmount;
    }

    public void setFeeAmount(Double feeAmount) {
        this.feeAmount = feeAmount;
    }

    @Column(name = "day_change", precision = 15, scale = 2)
    public Double getDayChange() {
        return dayChange;
    }

    public void setDayChange(Double dayChange) {
        this.dayChange = dayChange;
    }

    @Column(name = "status", length = 2)
    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "pay_time")
    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    @Column(name = "wallet_addr", length = 255)
    public String getWalletAddr() {
        return walletAddr;
    }

    public void setWalletAddr(String walletAddr) {
        this.walletAddr = walletAddr;
    }

    @Column(name = "ret_code", length = 50)
    public String getRetCode() {
        return retCode;
    }

    public void setRetCode(String retCode) {
        this.retCode = retCode;
    }

    @Column(name = "ret_desc", length = 255)
    public String getRetDesc() {
        return retDesc;
    }

    public void setRetDesc(String retDesc) {
        this.retDesc = retDesc;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}
